# 2024.06.28——CSDN博客——【Python】专栏
# 运算符与注释——2024.06.28完成

# Python中的注释
# a = 10  # 这是单行注释
"""这也是单行注释"""
'''
这是多行注释
这是多行注释
这是多行注释
'''
"""
这也是多行注释
这也是多行注释
这也是多行注释
"""

# 注释的使用
# 创建一个变量
# a = 10     # 该变量类型为整型
# 注释很少位于代码的下方

'''
通过多行注释在文件或代码开头对文件或代码进行说明
如：现在需要编写一个函数用来交换两个变量的值
函数参数的类型可以是任意类型
函数在完成交换后，将交换后的值进行返回
'''


def swap(a, b):
    """
    该函数用于交换两个元素的值
    :param a:
    :param b:
    :return:
    """
    return b, a


a = 10
b = 20
print(f"a = {a}, b = {b}")
a, b = swap(a, b)  # 通过多元赋值来分别获取函数的返回值
print(f"a = {a}, b = {b}")


"""
多行注释嵌套多行注释
'''
可以通过不同的三引号来完成嵌套
'''
如果采用同一种三引号，程序则会报错
"""

'''
"""
这是用于测试同一种三引号的嵌套使用
"""
此时一部分的注释内容会无法被注释
"""
这样此时程序就无法正常运行
"""
'''
print("\n")

# Python 中的运算符

# +——加法
print(1 + 2)    # 整数+整数
print(1 + 1.2)  # 整数+浮点数
print(1.2 + 1.2)  # 浮点数+浮点数
print(1 + True)  # 整数+布尔值
print(True + False)  # 布尔值+布尔值
print(1 + complex(1, 2))    # 整数+复数
print(1.2 + complex(1, 2))    # 浮点数+复数
print(True + complex(1, 2))    # 布尔值+复数
print(complex(1, 2) + complex(1, 2))    # 复数+复数
print('abc' + 'def')    # 字符串+字符串
print([1, 2, 3] + [4, 5, 6])     # 列表+列表

print("\n")

a = "abc"
b = "def"
c = a + b
print(a)
print(b)
print(c)

a = [1, 2, 3]
b = [4, 5, 6]
c = a + b
print(a)
print(b)
print(c)

print('\n')

# *——乘法运算符
# 数字之间的乘法
print(1 * 2)
print(1 * 1.2)
print(1.2 * 1.3)
# ……一系列数字类型的值之间的乘法
# 字符串与整数的乘法
a = "abc"
print(a * 3)
# 列表与整数之间的乘法
a = [1, 2, 3]
print(a * 3)
print("\n")

# /与//——除法与取整除运算符
print(5 / 2)
print(5 // 2)
print(5.0 // 2)
print('\n')

# **——幂运算
print(2 ** 3)
print(8 ** (1/3))
print("\n")

# 关系运算符
print('abc' > 'bcd')
print('abc' == 'abc')
print('abc' < 'bcd')
print("\n")

print("小数比较中存在的风险：", end='')
print(0.1 + 0.2 == 0.3)
print(0.1)
print(0.2)
print(0.3)
print(0.1 + 0.2)
print(0.1 + 0.2 - 0.3 < 0.000001)
print('\n')

print("Python 中的连续比较操作")
print(3 > 2 > 1)
print('\n')

# 赋值运算符——海象运算符的使用
if (a := 5) > 3:
    print(a)
a = 5
if a > 3:
    print(a)

# if (a = 5) > 3:
#     print(a)
print('\n')

# 逻辑运算符
a = 0
b = 1
if a and (b := b - 1):
    print(3)
print(a, b)
if b or (a := a + 1):
    print(4)
print(a, b)
print('\n')

# 成员运算符
print('a' in 'gfedcba')
print(5 in [1, 2, 3, 4])

for i in 'abcdefg':
    print(f'{i}', end=' ')
print('\n')
for i in [1, 2, 3, 4]:
    print(f'{i}', end=' ')
print('\n')

# 身份运算符
a = [1, 2, 3, 4]
b = 3
print(b is a)   # 判断b与a的来源是否相同
print(b is a[2])    # 判断b与a[2]的来源是否相同
c = a[:]
print(c)
print(b is c)   # 判断b与c的来源是否相同
print(b is c[2])    # 判断b与c[2]的来源是否相同
print(c is a)   # 判断c与a的来源是否相同
print(c == a)   # 判断c与a的值是否相同
print('\n')

# 运算符的优先级
print(1 + 2 * 3)    # 乘法的优先级高于加法
print((1 + 2) * 3)  # 圆括号的优先级高于乘法
